In a networked virtualization environment for storage management, also referred to as a clustered environment for storage management, several nodes (e.g., servers, data centers) share a plurality of storage devices over a network. Each node may include local storage devices (e.g., solid state drive (SDD)) and the clustered environment may also include several networked storage devices (e.g., cloud storage, storage area network (SAN), network file servers). Nodes within the virtualization environment for storage management may access networked storage devices and/or local storage devices of other nodes in the virtualization environment through the network. Likewise, nodes may communicate amongst each other over the same network.
Each node may host several user virtual machines, and virtual disks may be exposed by a node to its corresponding user virtual machines. In order to provide for disaster recovery and for backup purposes, it may be necessary for the networked virtualization environment for storage management to utilize an external storage environment for storage of user virtual machine data.
Conventionally, external storage environments provide two types of storage devices namely block storage and object storage. For a networked virtualization environment that utilizes a block-based system for storage, data will typically be written to the block storage device of the external storage environment for backup and recovery purposes. However, block storage devices residing at the external storage environment are not always reliable and do not necessarily provide optimal storage characteristics for backing up a clustered environment for storage management.
Block storage devices and object storage devices each have unique characteristics that may make them more or less desirable depending on the particular application.
Block storage devices include the characteristics of allowing overwrites on data, providing functionality to legacy applications and immediate consistency of data written to the block storage device. However, at the same time, block storage devices are not highly scalable, suffer from low reliability and are not highly available. Additionally, block storage devices are provided on a provisioning-basis, where a fixed amount of block storage is purchased upfront regardless of how much is actually used.
Object storage devices include the characteristics of being scalable, highly reliable and highly available. However, at the same time, object storage devices do not provide for overwrites (e.g., are write-once), suffer from latency and do not provide for immediate consistency of data written to the object storage device. On the other hand object storage devices are provided on a per-use basis, where storage is paid for only as it is consumed, such that a user of the object storage device is only charged for how much is actually used.
Therefore, what is needed is a mechanism for providing a block storage interface to the clustered environment for storage management while utilizing both block storage and object storage functionality from an external storage environment.